2023/12/231418字符

ES5 严格模式

  • 浏览器基于 es3.0 的 + es5.0 的新增方法使用的
  • es3.0 和 es5.0 产生冲突的部分
    • es5.0 严格模式 那么 es3.0 和 es5.0 产生冲突的部分就是用 es5.0 否则会用 es3.0

ES5.0 严格模式启动(不再兼容 es3.0 的一些不规则语法)

"use strict";  // 需要写在页面逻辑的最顶端

function test () {
    console.log(arguments.callee);  // es5 中没有 callee 属性
}
test();  //--> 报错

function test () {
    console.log(test.caller);  // es5 中没有 caller 属性
}
function demo () {
    test();
}
demo();

with (document) {  // es5 中没有 with 方法
    write('a');
}

es5.0 语法规范

"use strict";

var a = b = 0;  // b is not defined  变量赋值前必须声明
c = 0;  // b is not defined
// 局部 this 必须被赋值(Person.call(null / undefined)) 赋值什么就是什么,拒绝重复属性和参数
function test () {
    console.log(this);
}
test();  //--> undefined
new test();  //--> test{}
test.call({});  //--> Object{} 预编译时 this 不再指向 window
test.call(123);  //--> 123

function test(name, name){  // es3 中可以写相同的参数
    name = wang;
    name = wang;
    console.log(name);
}
test(1, 2);  //--> 报错

var a = 123;
eval('console.log(a)');  //--> a  eval() 将字符串当代码来用(改变作用域)